package palette;
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
import javax.swing.event.*;
import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
import javax.swing.JButton;


	
public class OptionPalette extends JPanel implements ActionListener{

	JSlider BarreRouge; 
	JSlider Barreverte;
	JSlider BarreBleu;

	int red = 128; 
	int green = 128;
	int blue = 128;
	//Compteur de clics
	private int compteur = 0;

	CouleurPersonnaliseePanel palette; // Le panel dans lequel on va afficher nos sliders et couleurs.

	JTextField TexteCouleurRGB; // shows the Java source equivalent
	JTextField TexteCouleurHexa;
	//JLabel label = new JLabel("Le JLabel");
	
	private ModelePalette mp;
	
	//Constructeur
	public OptionPalette(ModelePalette mp) {
		this.mp=mp;
	// Palette un nouvel objet GraphicsPanel	
	palette = new CouleurPersonnaliseePanel();

	// Mise en place d'un objet TextField afin d'afficher les valeurs
	TexteCouleurRGB = new JTextField();
	TexteCouleurHexa = new JTextField();
	
	TexteCouleurRGB.setFont(new Font("", Font.BOLD, 12));
	TexteCouleurRGB.setBorder(null);
	TexteCouleurHexa.setFont(new Font("", Font.BOLD, 12));
	TexteCouleurHexa.setBorder(null);

	//textField.setFont(textField.getFont().deriveFont(Font.BOLD|Font.ITALIC) );
	TexteCouleurRGB.setBackground(new Color((int) 0xc8ddf2));
	TexteCouleurHexa.setBackground(new Color((int) 0xc8ddf2));
	
	TexteCouleurRGB.setText("RGB (" + red + ", " + green + ", " + blue+")"); 
	TexteCouleurHexa.setText("HEXA (0x" + Integer.toHexString(
			blue + 256 * (green + 256 * red)) + ")");

	TexteCouleurRGB.setEditable(false);
	TexteCouleurHexa.setEditable(false);

	ChangeListener al = new MonListenerCouleur();

	BarreRouge = new JSlider(JSlider.VERTICAL,0, 255, red); //Min, Max, Valeur Initiale

	BarreRouge.setPreferredSize(new java.awt.Dimension(20,120));
	BarreRouge.addChangeListener(al);
	//BarreRouge.setBackground(new Color(237,33,38));
		
	Barreverte = new JSlider(JSlider.VERTICAL, 0, 255, green);
	Barreverte.setPreferredSize(new java.awt.Dimension(20,120));
	Barreverte.addChangeListener(al);
	Barreverte.setBackground(new Color(44,226,71));

	BarreBleu = new JSlider(JSlider.VERTICAL, 0, 255, blue);
	BarreBleu.setPreferredSize(new java.awt.Dimension(20,120));
	BarreBleu.addChangeListener(al);
	BarreBleu.setBackground(new Color(39,116,231));

//	//Mise en place de la palette de couleurs et du TextField dans notre BOX

	//JButton AjoutCouleur = new JButton("Ajouter");
	BoutonAjouter Ajout = new BoutonAjouter("Choisir");
	Ajout.addActionListener(this);
	//Ajout.addActionListener(this);

	
	//AjoutCouleur
	
	JPanel Bouton = new JPanel();
	Bouton.setBackground(new Color((int) 0xc8ddf2));
	Bouton.add(Ajout);
	
	JPanel CouleurPerso = new JPanel();
	CouleurPerso.setBackground(new Color((int) 0xc8ddf2));
	CouleurPerso.add(palette);
	
	JPanel RGB = new JPanel();
	RGB.setBackground(new Color((int) 0xc8ddf2));
    RGB.add(TexteCouleurRGB);
    
    JPanel HEXA = new JPanel();
	HEXA.setBackground(new Color((int) 0xc8ddf2));
    HEXA.add(TexteCouleurHexa);
    
    
	//Mise en place des 3 Slides dans le JPanel
	JPanel ControleCouleur = new JPanel();	
	//ControleCouleur.setLayout(new GridBagLayout()); //3,1
	//ControleCouleur.setPreferredSize(new java.awt.Dimension(200,100));
	
	ControleCouleur.add(BarreRouge);
	ControleCouleur.add(Barreverte);
	ControleCouleur.add(BarreBleu);
    ControleCouleur.setBackground(new Color((int) 0xc8ddf2));
	//Affectation d'un contenu au conteneur
	this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
	//this.setLayout(new FlowLayout());
	//ControleCouleur.add(palette);
	//this.setLayout(new FlowLayout(0, 2, 2));
	//this.setBackground(new Color((int) 0xc8ddf2));
	//this.setLayout(setBackground(new Color(39,116,231)));
	//this.add((palette), BorderLayout.WEST);
	this.add(ControleCouleur);
	this.add(CouleurPerso);
	this.add(Bouton);
	this.add(RGB);
	this.add(HEXA);
	//this.add(label);
	//this.add(TexteCouleurRGB);
	//this.add(TexteCouleurHexa);

	
	} // Fin du constructeur


class CouleurPersonnaliseePanel extends JPanel {

	//Constructeur du GraphicsPanel
	public CouleurPersonnaliseePanel() {

	//this.setPreferredSize(new Dimension(10, 10));	
	this.setPreferredSize(new Dimension(30,30));
	//this.setBackground(new Color((int) 0xc8ddf2));
	//this.setForeground(Color.cyan);

	}// Fin du constructeur

	public void paintComponent(Graphics g) {

	super.paintComponent(g); 
    g.setColor(new Color(red, green, blue)); 
    this.setBackground(new Color(red, green, blue));


	}// Fin de la m�thode PaintComponent
}
    //A chaque changement de valeur, le curseur du JSlider engendre un ChangeEvent
class MonListenerCouleur implements ChangeListener {

	// Va permettre	
	public void stateChanged(ChangeEvent ae) {

	red = BarreRouge.getValue();
	green = Barreverte.getValue();
	blue = BarreBleu.getValue();
	
	TexteCouleurRGB.setText("RGB (" + red + ", " + green + ", " + blue+")"); 
	TexteCouleurHexa.setText("HEXA (0x" + Integer.toHexString(
			blue + 256 * (green + 256 * red)) + ")");
	
	palette.repaint(); //Permet d

	}// Fin de la m�thode
	
public int getRed() {
	return red;}
public int getGreen() {
	return green;}
public int getBlue() {
	return blue;
}
}
	@Override
	public void actionPerformed(ActionEvent e) {
		//Lorsque l'on clique sur le bouton, on met à jour le JLabel
		//this.compteur++;
		//label.setText("Ajout " + this.compteur + " fois");
		this.mp.setChoixColor(new Color(this.red, this.green, this.blue));
		// TODO Auto-generated method stub
		
	}

}